/*
 * Equipe: Menandro Dias E. Neto
 *         Thiago Torres
 *         Ubirajara Gabriela
 */

package com.mapdelivery.model.dao;

import com.mapdelivery.beans.MapDeliveryBean;
import com.mapdelivery.beans.Produto;
import com.mapdelivery.beans.Categoria;
import com.mapdelivery.model.dao.DAOCategoria;
import java.util.ArrayList;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author menandro.neto
 */
public class DAOProduto implements MapDeliveryDAO {

    public void delete(Integer pk) {
        Database db = new Database();
        String sql = "delete from Produto where ProdutoId = " + pk.toString();
        db.execSQL(sql);
        db.disConnect();
    }

    public void insert(MapDeliveryBean mdBean) {
        Produto bean = (Produto) mdBean;
        Database db = new Database();
        String sql = "insert into Produto values ("
                   + bean.getProdutoId().toString() + ", "
                   + bean.getCategoria().getCategoriaId().toString() + ", '"
                   + bean.getProDescricao()            + "', '"
                   + bean.getProDescricaoDetalhada()   + "', "
                   + bean.getProValorVenda().toString()+ ", '"
                   + bean.getProTempoPreparo()         + "') ";
        db.execSQL(sql);
        db.disConnect();
    }

    public void update(Integer pk, MapDeliveryBean mdBean) {
        Produto bean = (Produto) mdBean;
        Database db = new Database();
        String sql = "update Produto set "
                   + "proCategoriaId = "         + bean.getCategoria().getCategoriaId().toString() + ", "
                   + "proDescricao = '"          + bean.getProDescricao() + "', "
                   + "proDescricaoDetalhada = '" + bean.getProDescricaoDetalhada() + "', "
                   + "proValorVenda = "          + bean.getProValorVenda().toString() + ", "
                   + "proTempoPreparo = '"       + bean.getProTempoPreparo() + "' "
                   + "where ProdutoId = "        + bean.getProdutoId().toString();
        db.execSQL(sql);
        db.disConnect();
    }

    public ArrayList<MapDeliveryBean> findAll() {
        ResultSet rsBean;
        Produto bean = null;
        ArrayList<MapDeliveryBean> ret = new ArrayList<MapDeliveryBean>();
        Database db = new Database();
        String sql = "select * from Produto";
        rsBean = db.getResultSet(sql);
        try {
            while (rsBean.next())
                bean = new Produto();
                bean.setProdutoId(rsBean.getInt("ProdutoId"));
                bean.setProDescricao(rsBean.getString("proDescricao"));
                bean.setCategoria( (Categoria) new DAOCategoria()
                        .findByPrimaryKey(rsBean.getInt("CategoriaId")) );
                bean.setProDescricaoDetalhada(rsBean
                        .getString("proDescricaoDetalhada"));
                bean.setProTempoPreparo(rsBean.getString("proTempoPreparo"));
                bean.setProValorVenda(rsBean.getFloat("proValorVenda"));
                ret.add(bean);
        }
        catch (SQLException e) {

        }
        db.disConnect();
        return ret;
    }

    public ArrayList<MapDeliveryBean> findByDesc(String arg) {
        ResultSet rsBean;
        Produto bean = null;
        ArrayList<MapDeliveryBean> ret = new ArrayList<MapDeliveryBean>();
        Database db = new Database();
        String sql = "select * from Produto where proDescricao = " + arg;
        rsBean = db.getResultSet(sql);
        try {
            while (rsBean.next())
                bean = new Produto();
                bean.setProdutoId(rsBean.getInt("ProdutoId"));
                bean.setProDescricao(rsBean.getString("proDescricao"));
                bean.setCategoria( (Categoria) new DAOCategoria()
                        .findByPrimaryKey(rsBean.getInt("CategoriaId")) );
                bean.setProDescricaoDetalhada(rsBean
                        .getString("proDescricaoDetalhada"));
                bean.setProTempoPreparo(rsBean.getString("proTempoPreparo"));
                bean.setProValorVenda(rsBean.getFloat("proValorVenda"));
                ret.add(bean);
        }
        catch (SQLException e) {

        }
        db.disConnect();
        return ret;
    }

    public MapDeliveryBean findByPrimaryKey(Integer pk) {
        ResultSet rsBean;
        Produto bean = null;
        Database db = new Database();
        String sql = "select * from Produto where ProdutoId = " + pk.toString();
        rsBean = db.getResultSet(sql);
        try {
            while (rsBean.next())
                bean = new Produto();
                bean.setProdutoId(rsBean.getInt("ProdutoId"));
                bean.setProDescricao(rsBean.getString("proDescricao"));
                bean.setCategoria( (Categoria) new DAOCategoria()
                        .findByPrimaryKey(rsBean.getInt("CategoriaId")) );
                bean.setProDescricaoDetalhada(rsBean
                        .getString("proDescricaoDetalhada"));
                bean.setProTempoPreparo(rsBean.getString("proTempoPreparo"));
                bean.setProValorVenda(rsBean.getFloat("proValorVenda"));
        }
        catch (SQLException e) {

        }
        db.disConnect();
        return bean;
    }

}
